home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
source
/
gfxfx
/
fract3a.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-06-22
|
2KB
|
57 lines
{$g+,n+,e-}
{ Reals : -1 -0.1 0.3 -1.139
Complex : 0 0.8 -0.5 0.238 }
program Julia;
{ Julia Fractal, mode 13h. By Bas van Gaalen, Holland, PD }
uses
crt;
const
zoom=-1;
vidseg:word=$a000;
type
real=double;
var
cx,cy,xo,yo,x1,y1:real;
mx,my,a,b,i,orb:word;
procedure setpal(col,r,g,b : byte); assembler; asm
mov dx,03c8h; mov al,col; out dx,al; inc dx; mov al,r
out dx,al; mov al,g; out dx,al; mov al,b; out dx,al; end;
procedure retrace; assembler; asm
mov dx,03dah; @vert1: in al,dx; test al,8; jnz @vert1
@vert2: in al,dx; test al,8; jz @vert2; end;
begin
checkbreak:=true;
{write('Real part: '); readln(cx);} cx:=0.3;
{write('Imaginary part: '); readln(cy);} cy:=-0.5;
asm mov ax,13h; int 10h; end;
for i:=1 to 64 do setpal(i,10+i div 3,10+i div 3,15+round(i/1.306122449));
mx:=319; my:=199;
for a:=0 to mx do
for b:=0 to my do begin
if zoom<>-4 then xo:=-2-0.5*zoom+a/(mx/(4+zoom))
else xo:=-2-0.5*zoom+a/mx; { x complex plane coordinate }
if zoom<>-4 then yo:=2+0.5*zoom-b/(my/(4+zoom))
else yo:=2+0.5*zoom-b/my; { y complex plane coordinate }
orb:=0; i:=0;
repeat
x1:=xo*xo-yo*yo+cx;
y1:=2*xo*yo+cy;
xo:=x1;
yo:=y1;
inc(i);
until (i=64) or (x1*x1+y1*y1>4) or (abs(x1)>2) or (abs(y1)>2);
if i<>64 then orb:=i;
mem[vidseg:b*320+a]:=orb; { Plot orbit }
end;
while not keypressed do;
while keypressed do readkey;
textmode(lastmode);
end.